#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>


int main()
{
    pid_t id = fork();
    
    putenv("MYGETING=CUP and Alibaba");// 在父进程中，创建环境变量，只会影响子进程的环境变量表
    extern char** environ; 
    
    char* const new_arg[] = {
        (char*)"my_dream1=ALibaba",
        (char*)"my_dream2=XiaoMi",
        (char*)"my_dream3=Tencent",
        NULL
    };
    
    if (id == 0)
    {
        
        printf("this is a child: pid:%d, ppid:%d\n", getpid(), getppid());
        sleep(2);

        //execl("./mytest", "mytest", NULL);
        execle("./mytest", "mytest", NULL, new_arg);

       // char* const arg[] = {
       //     (char*)"ls",
       //     (char*)"-a",
       //     (char*)"-l"
       // };

       // printf("child begin..: pid: %d, ppid: %d\n", getpid(), getppid());
       // sleep(2);
       // execlp("top", "top", NULL);
        // execvp("ls", arg);
        // execv("/usr/bin/ls", arg);

        //sleep(2);
        //execlp("ls","ls", "-a", "-l", NULL);    
    }
    
    pid_t rid = waitpid(id, NULL, 0);
    sleep(2);
    if (rid > 0)
    {
        printf("wait sucess..\n");
    }
    return 0;
}

//int main()
//{
//    execl("/usr/bin/top", "top", NULL);
//    // execl("../24-8-10/myprocess", "./myprocess", NULL);
//    // execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
//    return 0;
//}
